Skip to content

fix(frontend): surface pending tools in ServerDetail approval banner (MCP-2917)#721

Merged
Dumbris merged 1 commit into
mainfrom
fix/mcp-2917-pending-tools-banner
Jun 19, 2026
Merged

fix(frontend): surface pending tools in ServerDetail approval banner (MCP-2917)#721
Dumbris merged 1 commit into
mainfrom
fix/mcp-2917-pending-tools-banner

Conversation

@Dumbris

@Dumbris Dumbris commented Jun 19, 2026

Copy link
Copy Markdown
Member

Summary

Makes pending (new, never-approved) tools appear in the ServerDetail → Tools tab Tool-Quarantine banner with the existing per-tool and bulk Approve/Block buttons, so an operator can approve them.

Previously selectQuarantinedTools had a hasChanged early-return: the banner was hidden whenever no tool was changed, even though pending tools on a non-quarantined server are genuinely blocked by the backend (checkToolApprovalsBlockedTools) and the Servers page already counts them (pending_count + changed_count). Banner and count now agree.

Changes

  • frontend/src/utils/toolQuarantine.ts — drop the hasChanged early-return; surface both pending and changed tools on a non-quarantined server. Quarantined server still returns [] (server-level banner covers it). Doc comment rewritten to document the new behavior and the intentional reversal of the MCP-2101 trust model.
  • frontend/src/views/ServerDetail.vue — subtle, dismissible hint in the banner explaining pending tools come from tool-level quarantine and can be auto-approved by setting skip_quarantine: true (server) or quarantine_enabled: false (global). Updated the quarantinedTools computed comment.
  • Tests — reconciled the MCP-2101 unit tests to the new behavior; added an all-pending + serverQuarantined=false regression test; added a view-level mount test asserting the banner, per-tool/bulk Approve & Block buttons, the pending warning badge, the dismissible hint, and that Approve calls api.approveTools.
  • Docsdocs/features/tool-quarantine.md Web UI section updated.

Verification

  • npx vitest --run207 passed (4 new), incl. red→green TDD on the core fix.
  • npx vue-tsc --noEmit → clean.
  • make build → frontend + embedded Go binary build clean.

Frontend-only. Independent of MCP-2918 (Tools.vue) and the CLI task.

Related: MCP-2917 (parent MCP-2916)

selectQuarantinedTools dropped freshly-pending tools whenever no tool was
'changed', so an all-pending, non-quarantined server hid the Tool-Quarantine
banner even though those tools are genuinely blocked by the backend
(checkToolApprovals -> BlockedTools) and the Servers page counts them
(pending_count + changed_count). Banner and count now agree.

- selectQuarantinedTools: surface both 'pending' and 'changed' tools on a
  non-quarantined server; keep suppression while the server is quarantined.
- ServerDetail: subtle dismissible hint explaining pending tools come from
  tool-level quarantine and can be auto-approved via skip_quarantine /
  quarantine_enabled.
- Tests: reconcile MCP-2101 trust-model unit tests to the new behavior, add
  all-pending regression test, add view-level banner/buttons/badge/hint test.
- Docs: update tool-quarantine.md Web UI section.

Related: MCP-2917
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying mcpproxy-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9dd4c06
Status: ✅  Deploy successful!
Preview URL: https://61948a0b.mcpproxy-docs.pages.dev
Branch Preview URL: https://fix-mcp-2917-pending-tools-b.mcpproxy-docs.pages.dev

View logs

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts

Workflow Run: View Run
Branch: fix/mcp-2917-pending-tools-banner

Available Artifacts

  • archive-darwin-amd64 (28 MB)
  • archive-darwin-arm64 (25 MB)
  • archive-linux-amd64 (16 MB)
  • archive-linux-arm64 (14 MB)
  • archive-windows-amd64 (28 MB)
  • archive-windows-arm64 (25 MB)
  • frontend-dist-pr (0 MB)
  • installer-dmg-darwin-amd64 (21 MB)
  • installer-dmg-darwin-arm64 (19 MB)

How to Download

Option 1: GitHub Web UI (easiest)

  1. Go to the workflow run page linked above
  2. Scroll to the bottom "Artifacts" section
  3. Click on the artifact you want to download

Option 2: GitHub CLI

gh run download 27810783764 --repo smart-mcp-proxy/mcpproxy-go

Note: Artifacts expire in 14 days.

@mcpproxy-gatekeeper mcpproxy-gatekeeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved via Claude Code review (MCP-2917). selectQuarantinedTools now surfaces pending+changed when not server-quarantined ([] when quarantined); MCP-2081 assertions coherently flipped into a regression test; ServerDetail renders pending tools with existing Approve/Block buttons. vue-tsc clean; vitest 3 changed specs 15/15, full suite 207/207 pass; CI 32/32 green.

@Dumbris Dumbris merged commit 5c3984a into main Jun 19, 2026
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants